# 3. 编写程序读取ahdyxw.csv中的新闻标题，发布时间和浏览次数，
# 并筛选出2019年发布且浏览次数排在前10的新闻数据，使用matplotlib程序库中的
# bar函数实现上述前10数据的可视化，最后将上述前10数据写入到mysql中的t1数据库的xw表中，
# 表的结构自定义（只要满足上述数据项的存储即可）
# 访问本地mysql环境的相关参数如下
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import pymysql
from sqlalchemy import create_engine

pd.set_option('display.max_row', 10000)
pd.set_option('display.max_column', 10000)
df = pd.read_csv('ahdy-2019-03-04-data.csv', sep=',', parse_dates=['发布时间'],
                 names='新闻标题,发布者,发布时间,浏览次数,新闻内容'.split(','),
                 usecols=[0, 2, 3], skiprows=1)
print(df.shape)
print(df.columns)
print(df.dtypes)
# df['发布时间'].dt.week()
df = df.loc[df['发布时间'].dt.year == 2019]
df.sort_values(by='浏览次数', inplace=True, ascending=False)
print(df.head(10))
#
# engine = create_engine('mysql+pymysql://root:123@localhost:3306/t1?charset=utf8mb4')
# df.to_sql('xw', con=engine, if_exists='append', index=False)
df.index = df['新闻标题']
del df['发布时间']
del df['新闻标题']

font = FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Black.ttc')

plt.bar([i[:10] for i in list(df.head(10).index)], df.head(10)['浏览次数'], )
plt.xlabel('新闻名称', fontproperties=font)
plt.ylabel('浏览次数', fontproperties=font)
plt.xticks(rotation=80, fontproperties=font)
plt.legend('count')
plt.show()
